package com.emin.platform.subjectcenter.service;

import com.emin.base.dao.PageRequest;
import com.emin.base.dao.PagedResult;
import com.emin.base.service.UndeleteableService;
import com.emin.platform.subjectcenter.common.response.ResponseBack;
import com.emin.platform.subjectcenter.entity.Ecm;
import com.emin.platform.subjectcenter.vo.EcmRequestVo;
import com.emin.platform.subjectcenter.vo.EcmResponseVo;
import com.emin.platform.subjectcenter.vo.PageResponse;

import java.util.List;

/**
 * 主体服务接口
 *
 * @author Jack
 * @version V1.0
 * @Title:
 * @Description: 主体服务接口
 * @date 2017/10/25 11:46
 */
public interface ECMService extends UndeleteableService<Ecm> {
    /**
     * 保存主体
     * 备注：新增和修改包括名称、状态等都使用这个接口
     *
     * @param vo 参数Vo
     * @return ResponseBack<Boolean>
     */
    ResponseBack<Boolean> save(EcmRequestVo vo);

    /**
     * 分页查询主体信息
     * 备注：可以进行条件分页查询和无条件分页查询</br>
     * 条件分页查询时：可以根据所属行业查询，也可以根据主体名称和主体代码进行模糊匹配查询
     *
     * @param industryId 主体行业ID
     * @param keyword    模糊查询值
     * @return ResponseBack<PagedResult<EcmResponseVo>>
     */
    ResponseBack<PageResponse<EcmResponseVo>> queryPage(PageRequest pageRequestData, Long
            industryId, String keyword);

    /**
     * 查询主体详情
     * 备注：可以根据ID查询主体详情</br>
     *
     * @param id 主体ID
     * @return ResponseBack<PagedResult<Ecm>>
     */
    ResponseBack<EcmResponseVo> queryDetail(Long id);

    /**
     * 激活主体
     * 备注：可以根据ID查询主体详情</br>
     *
     * @param ids 主体IDs
     * @return ResponseBack<Boolean>>
     */
    ResponseBack<Boolean> activate(String ids);

    /**
     * 激活主体
     * 备注：可以根据ID查询主体详情</br>
     *
     * @param ids 主体IDs
     * @return ResponseBack<Boolean>>
     */
    ResponseBack<Boolean> disable(String ids);

    /**
     * 根据keyword模糊查询所有接口
     *
     * @param keyword 模糊查询条件
     * @return ResponseBack<List<EcmResponseVo>>>
     */
    ResponseBack<List<EcmResponseVo>> findByKeyword(String keyword);

    /**
     * 根据ID判断主体是否激活
     *
     * @param id 主体ID
     * @return ResponseBack<List<EcmResponseVo>>>
     */
    ResponseBack<Boolean> checkIsActivate(Long id);
}
